home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Risc World 3
/
Risc World 3.iso
/
SOFTWARE
/
ISSUE2
/
FASTERPC
/
DRIVE_C
/
GAMES
/
#EVEL08.CK1
< prev
next >
Wrap
Text File
|
1991-01-01
|
3KB
|
104 lines
; Test program for !FasterPC
; Copyright D.J.Lawrence, 1993
;
; This test program loads a VGA mode 13 screen and scrolls
; it horizontally, as fast as it can. The program continues
; until the screen has scrolled once or until the user
; presses any key.
Code_Seg SEGMENT PUBLIC
ASSUME CS:Code_Seg
ORG 00100H ; Produce a '.COM' executable
MOV AX,0013H
INT 10H ; Mode 13H (VGA 256 colours)
MOV AX,3D00H
PUSH CS
POP DS
MOV DX,OFFSET PalName
INT 21H ; Open palette file
MOV FHandle,AX
MOV BX,FHandle
MOV AX,3F00H
MOV CX,0300H ; Read 768 bytes (3 registers * 256 colours)
MOV DX,OFFSET DataArea
INT 21H ; Read palette file into memory
MOV BX,FHandle
MOV AX,3E00H
INT 21H ; Close palette file
; Convert 8 bit palette values to 6 bit values by shifting right 2
PUSH CS
POP DS
MOV SI,OFFSET DataArea
MOV CX,0300H
ModLP1: MOV AL,[SI]
SHR AL,1
SHR AL,1
MOV [SI],AL
INC SI
LOOP ModLP1
; Update palette registers with shifted palette values
MOV AX,1012H
MOV BX,0000H
MOV CX,0100H
PUSH CS
POP ES
MOV DX,OFFSET DataArea
INT 10H
; Load picture file into video memory
PUSH CS
POP DS
MOV AX,3D00H
MOV DX,OFFSET PicName
INT 21H ; Open picture file
MOV FHandle,AX
MOV BX,FHandle
MOV AX,0A000H
PUSH AX
POP DS
MOV AX,3F00H
MOV CX,0FA00H ; Read 64000 bytes
MOV DX,0000H
INT 21H ; Read picture file into video memory
MOV BX,FHandle
MOV AX,3E00H
INT 21H ; Close picture file
; Perform the screen scroll for 320 pixels
; or until the user presses a key
; Initialise the 320 counter
MOV BX,0140H
; First store the left most pixel column
LScroll: MOV AX,0A000H
PUSH CS
PUSH AX
POP DS ; DS = A000
POP ES ; ES = CS
MOV SI,0000H
MOV DI,OFFSET DataArea
MOV CX,00C8H ; Repeat for all 200 screen pixel lines
MovLP1: MOVSB
ADD SI,013FH ; Move source to start of next pixel row
LOOP MovLP1
; Next scroll the whole screen left by one pixel
MOV AX,0A000H
PUSH AX
POP ES ; ES = A000
MOV SI,0001H
MOV DI,0000H
MOV CX,08000H
REP MOVSW ; Scroll using word move for max efficiency
; Restore the right most pixel column
MOV AX,0A000H
PUSH AX
PUSH CS
POP DS ; DS = CS
POP ES ; ES = A000
MOV SI,OFFSET DataArea
MOV DI,013FH
MOV CX,00C8H
M